While computers are still used for their traditional processing purposes, advances in communication infrastructures and protocols have turned standard computing devices into valuable communication tools. Computers communicate with each other, and with other electronic devices, over networks ranging from local area networks (LANs) to wide reaching global area networks (GANs) such as the Internet. Other electronic devices have experienced similar transformations, such as mobile phones, personal digital assistants (PDAs), and the like. Today, these wireless devices are being used for a variety of different types of communication. For example, current and anticipated mobile phone technologies have transformed these wireless devices into powerful communication tools capable of communicating voice, data, images, video, and other multimedia content. PDAs, once the portable calendaring and organizational tool, now often include network communication capabilities such as e-mail, Internet access, etc. With the integration of wireless and landline network infrastructures, a multitude of information types can be conveniently communicated between wireless and/or landline terminals.
A primary enabler for such peer-to-peer communications is the advancement and integration of networking technologies. In order to facilitate open platforms and interoperability, data communications models have been established. A well-known architectural model is the International Standards Organization's (ISO) Open Systems Interconnect (OSI) reference model. The standard OSI reference model, also referred to as the protocol stack, includes seven layers that define the functions of communications protocols. Each layer of the model represents a function that is to be performed when data is between peer applications across a network(s). Within a functional layer, any number of protocols may be used to provide a suitable service to the function of that layer. The protocols of a layer communicate with peers of an analogous protocol in that layer on a remote system or device. There are also rules defining how the information is passed between layers within the stack.
One layer of the protocol stack is the transport layer. The function of this layer is to guarantee that the receiving device receives data just as it was sent. Some transport layer protocols are considered “connectionless,” in that there is no handshaking to “establish” a virtual connection between sending and receiving devices. The User Datagram Protocol (UDP) is an example of one such connectionless transport layer protocol. However, other transport layer protocols provide a reliable, connection-oriented, byte-stream communication. These protocols will retransmit data for lost or damaged segments, and also establish logical end-to-end connections between the communicating hosts using handshaking techniques.
One well-known connection-oriented transfer layer protocol is the Transmission Control Protocol (TCP). TCP is the predominant transfer layer protocol used in Internet data transmissions. TCP provides reliability by retransmitting data unless it receives an acknowledgment from the receiving device that the data successfully arrived at the receiving device. TCP also utilizes a handshake to establish the logical end-to-end connection between the communicating devices. This protocol also views data as a continuous stream, and maintains the sequence in which bytes/octets are sent and received to facilitate this byte-stream characteristic.
The Stream Control Transmission Protocol (SCTP) is another connection-oriented transport layer protocol, which provides all the transport services that TCP provides. SCTP provides various functions that are different than that provided by TCP however, such as multi-streaming and multi-homing. Briefly, multi-streaming allows data to be partitioned into multiple streams that have the property of being delivered independently, so that segment/packet loss in any of the streams will only affect delivery within that stream and not in other streams. Another core feature of SCTP is multi-homing, which refers to the ability for a single SCTP endpoint to support multiple IP addresses.
Existing connection-oriented transport layer protocols, such as TCP and SCTP, were designed under the assumption that the end-to-end path of such protocol connections does not change during a session, and therefore the congestion control algorithms are triggered solely on packet loss or timeout information. A change in the end-to-end path may occur in wireline IP networks due to router failure or load balancing, however this does not occur very frequently. In addition, a change in route due to router failure nearly always results in TCP timeouts, since all the packets associated with the “old” route are lost.
But with user mobility the standard transport layer protocol assumption, that the end-to-end path of a such protocol connections does not change during a session, does not hold true. A receiver or sender may move from one network or sub-network (“subnet”) to another network/subnet. This is particularly true in the case of mobile devices, which can move from location-to-location, cell-to-cell, network-to-network, etc. When there is a change of networks/subnets, the entire end-to-end path between the sender and receiver might change completely. A complete change in the end-to-end path may take place, for example, if a TCP receiver uses Mobile-IPv6 with route optimization to move from one subnet to another. The end-to-end path may also change where the receiver uses a first path in a first wireless “cell,” and uses a second path when it moves to a second wireless cell. In such a case, the buffering capacity on the first and second paths may be significantly different from one another. In such a case, the sender's current estimate of the buffering capacity based on the first path, may be inaccurate with respect to the new second path on which communication is now established. A bad estimate of such buffering capacity can result in buffer overflow and consequently additional network congestion on the new path, ultimately reducing the throughput for the connection due to “timeouts.”
Accordingly, there is a need in the communications industry for a manner of improving transport layer throughput and reducing network congestion in situations involving host mobility. The present invention fulfills these and other needs, and offers other advantages over the prior art network congestion approaches.